diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 508f6be..9ceac0b 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -58,7 +58,7 @@
 	var $ar_cache_having		= array();
 	var $ar_cache_orderby		= array();
 	var $ar_cache_set			= array();
-
+	
 	var $ar_no_escape 			= array();
 
 
@@ -175,7 +175,7 @@
 	 *	select_max()
 	 *	select_min()
 	 *	select_avg()
-	 * select_sum()
+	 *  select_sum()
 	 *
 	 * @access	public
 	 * @param	string	the field
@@ -286,7 +286,7 @@
 			{
 				$val = trim($val);
 
-				// Extract any aliases that might exist. We use this information
+				// Extract any aliases that might exist.  We use this information
 				// in the _protect_identifiers to know whether to add a table prefix
 				$this->_track_aliases($val);
 
@@ -332,7 +332,7 @@
 			}
 		}
 
-		// Extract any aliases that might exist. We use this information
+		// Extract any aliases that might exist.  We use this information
 		// in the _protect_identifiers to know whether to add a table prefix
 		$this->_track_aliases($table);
 
@@ -438,7 +438,7 @@
 
 					$v = ' '.$this->escape($v);
 				}
-
+				
 				if ( ! $this->_has_operator($k))
 				{
 					$k .= ' = ';
@@ -926,7 +926,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set" function. Allows key/value pairs to be set for inserting or updating
+	 * The "set" function.  Allows key/value pairs to be set for inserting or updating
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1084,7 +1084,7 @@
 		{
 			if ($this->db_debug)
 			{
-				//No valid data array. Folds in cases where keys and values did not match up
+				//No valid data array.  Folds in cases where keys and values did not match up
 				return $this->display_error('db_must_use_set');
 			}
 			return FALSE;
@@ -1124,7 +1124,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_insert_batch" function. Allows key/value pairs to be set for batch inserts
+	 * The "set_insert_batch" function.  Allows key/value pairs to be set for batch inserts
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1158,7 +1158,7 @@
 
 			if ($escape === FALSE)
 			{
-				$this->ar_set[] = '('.implode(',', $row).')';
+				$this->ar_set[] =  '('.implode(',', $row).')';
 			}
 			else
 			{
@@ -1169,7 +1169,7 @@
 					$clean[] = $this->escape($value);
 				}
 
-				$this->ar_set[] = '('.implode(',', $clean).')';
+				$this->ar_set[] =  '('.implode(',', $clean).')';
 			}
 		}
 
@@ -1399,7 +1399,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_update_batch" function. Allows key/value pairs to be set for batch updating
+	 * The "set_update_batch" function.  Allows key/value pairs to be set for batch updating
 	 *
 	 * @access	public
 	 * @param	array
@@ -1652,7 +1652,7 @@
 			return;
 		}
 
-		// Does the string contain a comma? If so, we need to separate
+		// Does the string contain a comma?  If so, we need to separate
 		// the string into discreet statements
 		if (strpos($table, ',') !== FALSE)
 		{
@@ -1682,7 +1682,7 @@
 	 * Compile the SELECT statement
 	 *
 	 * Generates a query string based on which functions were used.
-	 * Should not be called directly. The get() function calls it.
+	 * Should not be called directly.  The get() function calls it.
 	 *
 	 * @access	private
 	 * @return	string
@@ -1989,7 +1989,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values. Called by the get() function
+	 * Resets the active record values.  Called by the get() function
 	 *
 	 * @access	private
 	 * @param	array	An array of fields to reset
@@ -2009,7 +2009,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values. Called by the get() function
+	 * Resets the active record values.  Called by the get() function
 	 *
 	 * @access	private
 	 * @return	void
